package controller

import (
	"bubble/models"
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)

func IndexHandler(c *gin.Context) {
	c.HTML(http.StatusOK, "index.html", nil)
}

func AddTodoHandler(c *gin.Context) {
	var todo models.Todo
	todo.Todo = c.PostForm("todo")
	todo.Status = 0
	err := models.CreateTodo(&todo)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 415,
			"msg": "添加失败",
		})
	}
	c.JSON(http.StatusOK, gin.H{
		"code": 0,
		"msg": "添加成功",
	})
}

func UpdateTodoHandler(c *gin.Context) {
	id, ok := c.Params.Get("id")
	if ! ok {
		c.JSON(http.StatusOK, gin.H{
			"code": 408,
			"msg": "id不能为空",
		})
	}
	todo, err := models.GetATodo(id)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 407,
			"msg": "记录不存在",
		})
	}
	if todo.Status == 0 {
		todo.Status = 1
	} else {
		todo.Status = 0
	}
	err = models.UpdateTodo(todo)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 416,
			"msg": "更新失败",
		})
	}
	c.JSON(http.StatusOK, gin.H{
		"code": 0,
		"msg": "修改成功",
	})
}

func GetTodoHandler(c *gin.Context) {
	todos, err := models.GetTodo()
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 417,
			"msg": "获取失败",
		})
	}
	c.JSON(http.StatusOK, gin.H{
		"code": 0,
		"msg": "获取成功",
		"data": todos,
	})
}

func DeleteToHandler(c *gin.Context) {
	id, ok := c.Params.Get("id")
	if ! ok {
		c.JSON(http.StatusOK, gin.H{
			"code": 410,
			"msg": "id can not be null",
		})
	}
	todo, err := models.GetATodo(id)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 418,
			"msg": "记录不存在",
		})
	}
	err = models.DeleteTodo(todo)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 419,
			"msg": fmt.Sprintf("删除失败：%v", err),
		})
	}
	c.JSON(http.StatusOK, gin.H{
		"code": 0,
		"msg": "delete success",
	})
}

